Windowsのパッケージマネージャー「winget」を使ってみた
Windowsのパッケージマネージャーであるwingetを使ってみたので紹介します。
パッケージマネージャーとは?
パッケージマネージャーとは、コンピュータへのソフトウェアのインストールを管理するツールです。
何かのソフトウェアを使いたいと思ったら、公式サイトにアクセスして、インストーラをダウンロードして、手順に従ってインストールするのが一般的かと思います。複数のソフトウェアをインストールしたかったら、ソフトウェアごとにその作業を行う必要があります。コンピュータを買い換えたら、新しいコンピュータでまた同じ作業をすることになります。
パッケージマネージャーは、これらの作業を簡単にするためのツールです。インターネット上に各種ソフトウェアの情報が集積されており、パッケージマネージャーを介してそれらのソフトウェアをインストールしたり、アップグレードしたりすることができます。ソフトウェアごとに別々の手順ではなく、一貫した方法で管理ができるので、環境構築がとても楽になります。
Linux向けの「APT」や「yum」、macOS向けの「Homebrew」などがあります。
Windowsのパッケージマネージャー
WindowsにはChocolateyやScoopといったサードパーティ製のものの他に、Microsoftが開発しているwingetというパッケージマネージャーが存在します。
wingetはWindows11と最新バージョンのWindows10にバンドルされており、該当のOSであれば何も準備することなくすぐに使い始めることができます。
そこで、今回はwingetを使ってみました。
wingetを使ってみる
以下、記述しているコマンドはコマンドプロンプトにて実行しています。
インストール
前述したように、wingetはOSによっては初めからインストールされています。私の使っているパソコンにも入っていたため、インストール作業は行っていません。
インストールされているか確認するには、以下のコマンドを実行します。
winget -v
画像のようにバージョン番号が表示されたらインストールされています。
インストールされていない場合はMicrosoft Storeからインストールできます。
インストールしたいソフトウェアを探す
では、実際にソフトウェアをインストールしてみます。今回は、Notionというメモアプリをインストールしたいと思います。
まず、Notionがwingetでインストールできるのかどうかを確認します。
searchコマンドを実行すると、wingetでインストールできるソフトウェアを検索することができます。以下のように検索条件を指定すると、条件に合致するソフトウェアが画面に表示されます。
winget search "notion"
ちなみに、二重引用符の中身を空にするとインストール可能な全ソフトウェアが表示されます。
ソフトウェアの詳細を調べる
ソフトウェアの詳細な情報を調べることができます。showコマンドを実行します。
winget show "notion"
バージョンや発行元、インストーラのリリース日などが確認できます。
二重引用符の中身は完全一致である必要があります。また、名前だけでなくIDで指定することもできます。
winget show "Notion.Notion"
インストールする
インストールするにはinstallコマンドを使います。最新バージョンをインストールすることもできますし、バージョンを指定することもできます。
インストール可能なバージョンを調べるには、showコマンドにversionsオプションを指定します。
winget show "Notion" --versions
インストール可能なバージョンが画像のように表示されます。
installコマンドにversionオプションを指定して実行します。最新バージョンをインストールする場合は、versionオプションは不要です。
winget install "Notion" --version 2.0.28
設定⇒アプリで確認すると、バージョン2.0.28がインストールされていることがわかります。
アップグレードする
インストール済みのソフトウェアをアップグレードすることもできます。
まず、現在インストールされているソフトウェアのうち、アップデート可能なソフトウェアを確認します。upgradeコマンドにオプションを何もつけずに実行します。
winget upgrade
現在のバージョンと、利用可能なバージョンが表示されます。
特定のソフトウェアを最新バージョンにアップグレードする場合は、upgradeコマンドにソフトウェア名のみを指定します。
winget upgrade "Notion"
また、全てのソフトウェアをアップグレードする場合はallオプションを指定します。
winget upgrade --all
インストール情報をエクスポートする
wingetでインストールしたソフトウェアの情報を、exportコマンドを使ってJSON形式でエクスポートすることができます。outputオプションには出力ファイルのパスを指定します。
winget export --output C:\work\install.json
エクスポートしたJSONファイルをインポートする
エクスポートしたJSONファイルは、インポートをすることで記載されたツールをインストールすることができます。これを使えば、チーム内で開発環境を統一したり、PCの引っ越し時に前と同じ環境を簡単に構築したりできます。
エクスポートしたJSONファイルをインポートするにはimportコマンドを使用します。import-fileオプションにJSONファイルのパスを指定します。
winget import --import-file C:\work\install.json
これを実行すると、インストールされていないソフトウェアは自動的にインストールされます。既にインストールされていても、バージョンが古い場合はアップグレードされます。
既にインストールされており、アップグレードも不要なソフトウェアはスキップされます。
まとめ
今まで、買い替えなどで新しいPCにするときには「前のPCに何のソフトが入ってたかな~」と思い出しながら一つ一つインストールしていたので、かなり面倒でした。しかし、旧PCでエクスポート⇒新PCでインポートすれば、一瞬で使い慣れた環境が再現できるのでとても便利だなと思いました。
また、チーム開発をするときに、JSONファイルを配布してインポートしてもらうことでメンバー間の開発環境を統一するといった使い方もできそうだなと思いました。
面倒な環境構築が簡単になるので、ぜひ試してみてください。
補足
wingetでは、ソフトウェア一つ一つの情報を「マニフェスト」と呼ばれるYAMLファイルで管理しています。ソフトウェアの製作者は自分のソフトウェアをwingetの管理下に置きたかったら、YAMLファイルを作成し、所定のリポジトリに送信することになっています。
YAMLファイルはこのリポジトリのmanifestsフォルダに登録されています。つまり、ここにあるものはwingetの管理下にある=wingetでインストールできるソフトウェアということになります。